fix: gracefully handle missing active session on download routes (fixes #415)#416
Merged
SeaCelo merged 2 commits intoEAPD-DRB:mainfrom Apr 9, 2026
Merged
Conversation
This was referenced Apr 9, 2026
8d941f7 to
cdba5d1
Compare
Collaborator
|
@tejassinghbhati and @krrishrastogi05 thank you for working on this issue. I'm merging this PR, with a few additional fixes. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Linked issue
Existing related work reviewed
Overlap assessment
resDatahandling, but entirely misses the missing session vulnerabilities in the download endpoints.TypeErrorcrashes specifically occurring across the file download routes.Why this PR should proceed
500 Internal Server Error) that occurs when any of the 5 download routes are accessed without a correctly initialized active session, safely catching the error and returning an appropriate400response.Summary
if case is None:returning a graceful 400 JSON response instead of blindly continuing to the dataset lookup.pathlib.Pathconstructor requires a string and cannot process a returnedNonefromsession.get('osycase', None). Doing so throws an unhandledTypeErrorin the route's primary thread, crashing the Flask route.Validation
Documentation
Scope check
OSeMOSYS/MUIOdependencyEAPD-DRB/MUIOGO:main(not upstream)Exception rationale